AWeb erbjuder ett unikt och kraftfullt sätt att köra skalkommandon och ARexx-program från en sida genom att bara klicka på en länk eller genom att skicka ett formulär. Med lite ansträngning kan du skapa komplexa program som använder AWeb för sitt användargränssnitt, som startar program som dynamiskt skapar nya dokument som läses av AWeb via ARexx, med mera.
Även om denna funktion kan vara mycket användbar kan den också vara mycket
farlig. Därför fungerar detta bara på lokala sidor (med en URL som börjar
med file://localhost/
) och om rutan
Tillåt skalkommandon i
länkar är kryssad. Om den inte är kryssad kommer AWeb att öppna ett
varningsfönster när du följer en sådan hyperlänk. I detta varningsfönster
kan du avbryta kommandot eller låta det köras.
För att inkludera ett enkelt kommando, lägg bara till en länk i dokumentet som pekar på en URL med formatet
x-aweb:command/ditt_DOS-kommando
Om användaren klickar på länken kommer ditt_DOS-kommando att utföras. Utmatningen från kommandot visas i ett konsollfönster som automatiskt öppnas, såvida du inte anger ett annat utmatningssätt i ditt kommando.
Eftersom kompatibelt HTML-läge
avslutar en URL vid ett mellanslag, se till att du har ersatt alla
mellanslag i kommandot med " 
". Annars kommer
dina kommandon inte att fungera om användaren har valt kompatibelt
HTML-läge.
Exempel: <a
href="x-aweb:command/dir sys: all">visa
låda</a>
låter användaren köra kommandot
dir sys: all
genom att klicka på orden "visa
låda
".
OBS: DOS-kommandot exekveras i ett separat skal med den
aktuella lådan satt till samma som den för AWeb. Du bör bara använda
absoluta sökvägar i DOS-kommandot, då resultatet annars kan bero på vilken
låda som råkade vara aktuell då du startade AWeb. När AWeb kör kan du
använda tilldelningen AWebPath:
som en absolut referens till
den låda där AWebs programfil finns.
ARexx-program startas från din sida på ett liknande sätt. Lägg bara till en vanlig länk som pekar på en URL med formatet
x-aweb:rexx/ditt_ARexx-program
Om användaren klickar på länken kommer ditt_ARexx-program att startas med ARexx-porten för det aktuella fönstret satt som den förvalda kommandoporten.
Du kan använda HTML-formulär eller klickbara kartor för att skicka parametrar till ditt DOS-kommando eller ARexx-program.
Ange attributet ACTION="x-aweb:command/ditt_kommando"
i
<FORM>
-märket för att utföra kommandot när användaren
skickar formuläret. På samma sätt kan du inkludera attributet
ACTION="x-aweb:rexx/ditt_program"
för att köra ett
ARexx-program.
För formulär med METHOD=GET
(det förvalda) konverteras
formulärdatan till argument i AmigaDOS-format: fältnamnet används som
argumentnamn (nyckelord) och fältvärdet används som argumentvärde. Värdet
kommer att få citattecken runt sig, med escape-,
radmatnings- och citattecken angivna på det sätt som krävs
av AmigaDOS.
Obs: flaggor (/S) kan inte anges på detta sätt. Du kan använda ett skript istället, som exemplet nedan visar.
Parametrar för ARexx-program skickas på samma sätt som för DOS-program. Argumentsträngen innehåller namnet, ett likhetstecken, och det citerade värdet för varje formulärfält. Se det andra exemplet nedan för hur dessa argument kan tolkas.
Observera att den totala längden för alla argument som skickas på det här sättet är begränsad till cirka 4000 tecken; resten trunkeras. Om ditt formulär kan generera längre argument, använd METHOD=POST istället.
För formulär med METHOD=POST
skapas en temporär fil. Kommandot
eller ARexx-programmet kommer att anropas med exakt ett argument,
filnamnet. Den temporära filen innehåller meddelandet på samma sätt som det
skulle ha skickas till en HTTP-server. Det betyder i korthet att:
&
.
+
.
%XX
, där XX
är den hexadecimala
representationen för tecknet i fråga.
Det är upp till kommandot eller ARexx-programmet att radera den temporära filen efteråt.
Observera att du bör använda den förvalda kodningstypen
(ENCTYPE="application/x-www-form-urlencoded"
, eller ange inte
attributet ENCTYPE
). Kodningstypen multipart/form-data
stöds inte för formulär som skickas till skalkommandon och ARexx-program.
För filuppladdningsfält (<INPUT TYPE=FILE>
) inkluderas
filens namn i meddelandet när den förvalda kodningen används, inte
filens innehåll, vilket vore fallet för formulär med kodningen
multipart/form-data
. Det är förmodligen vad du vill ha i ditt
kommando eller ARexx-program.
När du använder en klickbar karta skickas x- och y-koordinaterna för muspekaren inom bilden som parametrar till kommandot, utan några nyckelord.
Om ditt skript eller program har skapat ett HTML-dokument (eller bara en
enkel textfil) kan du automatiskt läsa in filen i AWeb. Använd
ARexx-kommandot OPEN
för
detta. Om du använder samma namn på din fil flera gånger, i olika syften,
se till att du lägger till flaggan RELOAD
för att förhindra
att AWeb använder föregående version av dokumentet igen (som kan finnas i
fickminnet).
Detta fungerar naturligtvis bättre från ARexx-program än från DOS-skript. I
DOS-skript kan du inte ta reda på vilken ARexx-port som
OPEN
-kommandot skall skickas till.
Ett annat sätt är att ladda det resulterande dokumentet direkt till AWeb
medan du skapar det, utan att gå via en temporär fil. Se kommandot
CHANOPEN
för mer
information.
Nedan finns två exempel på denna funktion. Se koden för denna sida och det körda programmet för att förvissa dig om att formuläret inte kommer att orsaka några skador. Se sedan till att rutan Tillåt skalkommandon i länkar i programinställningarna är kryssad och prova formuläret.
Det här exemplet visar bara innehållet av lådan Sys:
i ett
separat konsollfönster: visa låda.
Det här exemplet visar innehållet av den valda lådan.